import axios from 'axios'
// import { Message } from 'element-ui'
import store from '@/store'
import { getToken } from '@/utils/auth' 
//    import { performanceMonitor, businessMonitor } from './monitor'

// 创建axios实例
const service = axios.create({
  baseURL: 'http://127.0.0.1:8000/uniapp', // 直接使用127.0.0.1
  timeout: 15000, // 请求超时时间
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  }
})

// 请求拦截器
service.interceptors.request.use(
  config => {
    // 记录请求开始时间
    config.requestStartTime = Date.now()
    
    // 在发送请求之前做些什么
    if (store.getters.token) {
      config.headers['Authorization'] = 'Bearer ' + getToken()
    }

    // 打印请求信息
    console.log('Request:', {
      url: config.url,
      method: config.method,
      params: config.params,
      data: config.data
    })

    return config
  },
  error => {
    console.error('Request error:', error)
    return Promise.reject(error)
  }
)

// 响应拦截器
// service.interceptors.response.use(
//   response => {
//     const res = response.data

//     // 打印完整的响应信息
//     console.log('Response details:', {
//       url: response.config.url,
//       method: response.config.method,
//       status: response.status,
//       data: response.data,
//       headers: response.headers
//     })

//     // 如果返回的状态码不是200，说明接口请求有误
//     if (res.code !== 200) {
//       const errorMsg = res.message || 'Error'
//       console.error('API Error:', {
//         code: res.code,
//         message: errorMsg,
//         data: res.data
//       })

//       Message({
//         message: errorMsg,
//         type: 'error',
//         duration: 5 * 1000
//       })

//       // 401: 未登录或token过期
//       if (res.code === 401) {
//         store.dispatch('user/resetToken').then(() => {
//           location.reload()
//         })
//       }
//       return Promise.reject(new Error(errorMsg))
//     }

//     return res
//   },
//   error => {
//     console.error('Response error:', error)
//     let message = '网络请求失败'
    
//     if (error.response) {
//       const { status, data } = error.response
//       message = data?.message || `请求失败(${status})`
      
//       // 添加更详细的错误日志
//       console.error('Error details:', {
//         status,
//         data,
//         config: error.config,
//         message: error.message,
//         url: error.config?.url,
//         method: error.config?.method
//       })
      
//       switch (status) {
//         case 400: message = '请求参数错误'; break
//         case 401: 
//           message = '未授权，请重新登录'
//           store.dispatch('user/resetToken').then(() => {
//             location.reload()
//           })
//           break
//         case 403: message = '拒绝访问'; break
//         case 404: message = '请求地址出错'; break
//         case 408: message = '请求超时'; break
//         case 500: message = '服务器内部错误'; break
//         case 501: message = '服务未实现'; break
//         case 502: message = '网关错误'; break
//         case 503: message = '服务不可用'; break
//         case 504: message = '网关超时'; break
//         case 505: message = 'HTTP版本不受支持'; break
//         default: message = `连接错误(${status})`
//       }
//     } else if (error.request) {
//       // 添加更详细的请求错误日志
//       console.error('Request error details:', {
//         request: error.request,
//         code: error.code,
//         message: error.message,
//         url: error.config?.url,
//         method: error.config?.method
//       })
      
//       message = error.code === 'ECONNABORTED' 
//         ? '请求超时，请检查网络连接'
//         : '网络连接失败，请检查网络设置'
//     } else {
//       // 添加更详细的配置错误日志
//       console.error('Config error details:', {
//         message: error.message,
//         config: error.config,
//         url: error.config?.url,
//         method: error.config?.method
//       })
      
//       message = error.message || '请求配置错误'
//     }

//     Message({
//       message: message,
//       type: 'error',
//       duration: 5 * 1000
//     })
//     return Promise.reject(error)
//   }
// )

export default service 